# 作业：
# 1、编写一个学生方法，产生一堆学生对象（姓名），传入形参控制学生生成数量
def get_student(num):
    from faker import Faker
    faker = Faker(locale='zh_cn')
    result = [faker.name() for i in range(num)]
    return result

# 2、创建一个方法，用来生成普通人必备的信息：姓名、年龄、住址、身份证号、手机号，随机生成20个写入personinfo.txt里
# 格式：姓名：xxx  年龄：xxx 住址：xxx 身份证号：xxx
def write_info():
    from faker import Faker
    from random import randint
    faker = Faker(locale='zh_cn')
    for i in range(20):
        with open("personinfo.txt",'a',encoding='utf-8') as f:
            f.write("姓名：" + faker.name() + "  " + "地址："  + faker.address() + "  " + "身份证号：" +faker.ssn(min_age = 18,max_age = 90) + "手机号：" + faker.phone_number() + "  " +"年龄：" + str(randint(18,60)) + "\n"  )

# write_info()

# 3、文本 student.txt.txt中包含下面的内容
# zhangshan:30
# lisi:50
# wangwu:60
# lifei:70
# 期望能够统计出其中的内容，以dict的形式保存，例如：
# {"zhangshan":30,"lisi":50,"wangwu":60,"lifei":70}
"""
result = {}
with open("student.txt",'r',encoding='utf-8') as f:
    for i in f.readlines():
        result[i.split(":")[0]] = int(i.split(":")[1].strip())
print(result)
"""

# 4、给你一个 非空 整数数组 nums ，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
"""
def count_num(nums:list):
    for i in nums:
        if nums.count(i) < 2:
            return i
print(count_num([12, 55, 55, 88, 88, 99, 99]))
"""

# 5、输入：["1","a","b","3","5","8","_"] 想要提取里面得数字，并保存到一个列表中
"""
def get_num(nums:list):
    result = []
    for i in nums:
        if i in "0123456789":
            result.append(i)
    return result
"""
# 6、写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,地址
# 用户通过input输入这4个内容(支持持续输入,Q或q退出),并传递给函数
# 函数接收到这些内容,将其追加到student_msg文件中
# 重点:复习文件操作
def write_student():
    while True:
        name = input("请输入姓名")
        if name == "q" or name == "Q":
            print("不再添加信息")
            print("退出")
            break
        sex = input("请输入性别")
        if sex == "":
            sex = "男"
        if sex == "q" or sex == "Q":
            print("不再添加信息")
            print("退出")
            break
        age = input("请输入年龄")
        if age == "q" or age == "Q":
            print("不再添加信息")
            print("退出")
            break
        address = input("请输入地址")
        if address == "q" or address == "Q":
            print("不再添加信息")
            print("退出")
            break
        with open("student_msg.txt",'a',encoding='utf-8') as f:
                f.write("姓名：" + name + "  " + "地址："  + address + "  " +"年龄：" + str(age) + "  性别" + sex+ "\n" )
# write_student()


#  7、打印功能菜单、添加学生信息、删除学生信息、修改学生信息、显示学生信息、退出系统，并且需要接收用户的输入，
#  在根据输入内容调用相应函数实现相应功能（存入文件），模板图如下。每次对学生管理系统发生改动，要写入改动点到log.txt文本中
student_list = []
def student_system():
    while True:
        print("=============================")
        print("学生管理系统")
        print("1.添加学生信息")
        print("2.删除学生信息")
        print("3.修改学生信息")
        print("4.显示所有学生信息")
        print("0.退出系统")
        fs = input("请输入您要选择的功能")
        if fs == "1":
            student_name = input("请输入您要添加的学生姓名")
            if student_name not in student_list:
                student_list.append(student_name)
                with open('stu.txt','w',encoding='utf-8') as f:
                    for i in student_list:
                        f.write(i+ "\n")

                print(f"您添加的{student_name}学生信息已经录入学生管理系统！")
            else:
                print("您要添加的学生已存在！")
                print("本次添加失败！")
        elif fs == "2":
            student_name = input("请输入您要删除的学生姓名")
            if student_name in student_list:
                student_list.remove(student_name)
                print(f"删除{student_name}学生信息成功！")
                with open('stu.txt','w',encoding='utf-8') as f:
                    f.write(i+ "\n")
            else:
                print("您要删除的学生不存在！")
                print("本次删除失败！")
        elif fs == "3":
            student_old_name = input("请输入您要修改的学生姓名")
            student_new_name = input("请输入新的学生姓名")
            if student_old_name in student_list:
                student_list.remove(student_old_name)
                student_list.append(student_new_name)
                print(f"修改{student_old_name}学生成功！现在的名字为：{student_new_name}")
                with open('stu.txt','w',encoding='utf-8') as f:
                    f.write(i+ "\n")
            else:
                print("您要修改的学生不存在！")
                print("本次修改失败！")
        elif fs == "4":
            print("全部的学生信息为：")
            with open('stu.txt', 'r', encoding='utf-8') as f:
                print(f.read())
        elif fs == "0":
            print("退出学生管理系统！")
            print("欢迎您下次再来！")
            break


# student_system()


# 8、如今的社交软件层出不穷，虽然功能千变万化，但都具有好友管理系统的基本功能，包括添加好友、删除好友、备注好友、展示好友等。下面是一个简单的好友管理系统的功能菜单（存入文件）
#
# 好友管理系统中有5个功能，每个功能都对应一个序号，用户可根据提示“请输入您的选项”选择序号执行相应的操作，包括：
#
# 添加好友：用户根据提示“请输入要添加的好友：”输入要添加好友的姓名，添加后会提示“好友添加成功”。
#
# 删除好友：用户根据提示“请输入删除好友姓名：”输入要删除好友的姓名，删除后提示“删除成功”。
#
# 备注好友：用户根据提示“请输入要修改的好友姓名：”和“请输入修改后的好友姓名：”分别输入修改前和修改后的好友姓名，修改后会提示“备注成功”。
#
# 展示好友：若用户还没有添加过好友，提示“好友列表为空”，否则返回每个好友的姓名。
#
# 退出：关闭好友管理系统。
#
# 本任务要求编写程序，模拟实现如上所述的好友管理系统。
#
# 文件读取要使用相对路径，确保在任何的电脑、终端都可以运行








